/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BaseDeDatos;
import Clases.Equipos;
import Clases.Basico;
import Clases.Persona;
import Clases.Componentes;
import Clases.Prestamos;
import java.sql.*;

/**
 *
 * @author Franco y Pato
 */
public class Datos {
    //Atributos.    
    //Constructor.
    /**
     * 
     */
    public Datos(){}
    //Métodos.
    
///////////////////////////////////////////////////////////////////////////////
////////////////////////////PERSONA///////////////////////////////////////////
        
    /**
     * 
     * @throws Exception
     */
    public void crearDatosPersona() throws Exception {
        //Este método crea una base de datos de personas físicas.
        //Conexión con el archivo de base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
        Statement stat = conn.createStatement();
        //Crea una tabla llamada alumno.
        stat.executeUpdate("create table persona (legajo INTEGER PRIMARY KEY, "
                + "nombre, curso, email, telefono, pass, privilegios);");
        //Termina la conexión.
        conn.close();
    }
    
    /**
     * 
     * @param oPersona
     * @throws Exception
     */
    public void setDatosPersona(Persona oPersona) throws Exception{
        //Esta función sirve para guardar en la base de datos la información
        //introducida por el usuario.
        //A este método se le debe entregar el objeto que se desea cargar a la 
        //base de datos.
        //Conección SQL-LITTLE
        Class.forName("org.sqlite.JDBC");
        //Conexión con el archivo de base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
        Statement stat = conn.createStatement();
        //Guarda en la tabla alumno todos sus atributos.
        stat.executeUpdate("insert into persona values ('"+oPersona.getsLegajo()+"','"+oPersona.getsNombre()+"','"+oPersona.getsCurso()+"" +
                "', '"+oPersona.getsEmail()+"', '"+oPersona.getsTelefono()+"',"
                + "'"+oPersona.getsPass()+"'"
                + ", '"+oPersona.getsPrivilegios()+"');");
        //Conexión a ala base de datos finalizada.
        conn.close();
    }
    
    /**
     * 
     * @throws Exception
     */
    public void setDatosAdmin() throws Exception{
       //Esta función sirve para cargar el administrador del programa en
       //la base de datos en caso de que se allan borrados los archivos de
       //base de datos.
       //introducida por el usuario.
       Persona oPersona = new Persona();//Crea un objeto Persona
       oPersona.setsCurso("Profesores");//Seteo el curso
       oPersona.setsEmail("electro.inventario@gmail.com");//Seteo el email.
       oPersona.setsLegajo("1");//Seteo el legajo.
       oPersona.setsNombre("Admin");//Seteo el nombre
       oPersona.setsPass("Promo2011");//Seteo el password.
       oPersona.setsPrivilegios("Administrador");//Seteo los privilegios.
       oPersona.setsTelefono("4841000");//Seteo el teléfono.
               //Conección SQL-LITTLE 
       Class.forName("org.sqlite.JDBC");
       //Conexión con el archivo de base de datos.
       Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
       Statement stat = conn.createStatement();
       //Guarda en la tabla alumno todos sus atributos.
       stat.executeUpdate("insert into persona values ('"+oPersona.getsLegajo()+"','"+oPersona.getsNombre()+"','"+oPersona.getsCurso()+"" +
                "', '"+oPersona.getsEmail()+"', '"+oPersona.getsTelefono()+"',"
                + "'"+oPersona.getsPass()+"'"
                + ", '"+oPersona.getsPrivilegios()+"');");
       //Conexión a ala base de datos finalizada.
       conn.close();
    }
    
    /**
     * 
     * @param sNombre
     * @return
     * @throws Exception
     */
    public Persona getDatosPersona(String sNombre) throws Exception{
        //Método para conseguir los datos guardados en la base de datos.
        //A este método se le debe entregar el nombre de la persona que se busca.
        //Crea un nuevo objeto alumno.
        Persona oAlumno=new Persona();
        //Conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
        Statement stat = conn.createStatement();
        //Selecciona datos de la tabla alumno.
        ResultSet rs = stat.executeQuery("select * from persona where persona.nombre like'"+sNombre+"';");
        //Mientras recibe datos.
        while (rs.next()) {            
            oAlumno.setsNombre(rs.getString("nombre"));//Setea el nombre.
            oAlumno.setsCurso(rs.getString("curso"));//Setea el curso.
            oAlumno.setsEmail(rs.getString("email"));//Setea el email.
            oAlumno.setsTelefono(rs.getString("telefono"));//Setea el teléfono.
            oAlumno.setsLegajo(rs.getString("legajo"));//Setea el legajo.
            oAlumno.setsPass(rs.getString("pass"));//Setea el password.
            oAlumno.setsPrivilegios(rs.getString("privilegios"));//Setea los privilegios.
        }
        //Termino la recepción de datos.
        rs.close();
        //Terminó la conexión a la base de datos.
        conn.close();
        //Devuelve como resultado el objeto alumno.
        return oAlumno;
    }
    
    /**
     * 
     * @param oPersona
     * @throws Exception
     */
    public void updateDatosPersona(Persona oPersona)throws Exception{
        Class.forName("org.sqlite.JDBC");
        //Conección con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
        //Comienzo de envío de datos.
        Statement stat = conn.createStatement();
        //Ejecuta la instrucción para modificar la base de datos.
        stat.executeUpdate("update persona set nombre='"+oPersona.getsNombre()+"" +
                "', curso='"+oPersona.getsCurso()+"', email='"+oPersona.getsEmail()+"'"
                + ",telefono='"+oPersona.getsTelefono()+"'"
                + ",privilegios='"+oPersona.getsPrivilegios()+"'"
                + ",pass='"+oPersona.getsPass()+"'"
                + " where legajo="+oPersona.getsLegajo()+";");
        //Fin de la conección.
        conn.close();       
    }
       
    /**
     * 
     * @return
     * @throws Exception
     */
    public String DatosPersonatoHtml() throws Exception{
        //Declara una variable auxiliar.
        String sAux="";
        //Setea el título de la tabla HTML.
        sAux+="<center><h1>Instituto Técnico Salesiano Villada</h1>";
        //Setea el subtítulo de la tabla HTML.
        sAux+="<h2>Alumnos Especialidad Electrónica Industrial</h2><hr></center>";
        //Setea el borde y el ancho de la tabla.
        sAux+="<center><table border=1 width=700px>";
        //Setea las columnas de la tabla.
        sAux+="<tr><th>N</th><th>Nombre</th><th>Curso</th><th>Email</th><th>Teléfono</th>"
                + "<th>Privilegios</th>";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from persona order by curso;");
        int i=0;
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Aumenta una variable.
            i++;
            //Setea el número de envío en una celda.
            sAux+="<tr><td>"+i+"</td>";
            //Setea el nombre y el legajo en una misma celda
            sAux+="<td><b>" + rs.getString("nombre")+"</b><i>("+rs.getString("legajo")+")</i></td>";
            //Setea el curso en una celda.
            sAux+="<td>" + rs.getString("curso")+"</td>";
            //Setea el email en una celda.
            sAux+="<td>" + rs.getString("email")+"</td>";
            //Setea el teléfono en una celda.
            sAux+="<td>" + rs.getString("telefono")+"</td>";
            //Setea el privilegio en una celda.
            sAux+="<td>" + rs.getString("privilegios")+"</td>";
            //Setea los préstamos en una celda.
        }
        //Fin del envío de datos.
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        //Cierra la tabla HTML.
        sAux+="</table></center>";
        return sAux;
    }
    
///////////////////////////////////////////////////////////////////////////////
////////////////////////////EQUIPOS////////////////////////////////////////////
    /**
     * 
     * @throws Exception
     */
    public void crearDatosEquipo() throws Exception {
        //Este método crea una base de datos de equipos.
        //Conexión con el archivo de base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Crea una tabla llamada Equipos.
        stat.executeUpdate("create table equipos (legajo INTEGER PRIMARY KEY, nombre, "
                + "stock_deseado, stock_actual, ubicacion, aclaraciones,"
                + "codigo, manuales, ubicacion_manual, descripcion);");
        //Termina la conexión.
        conn.close();
    }
    
    /**
     * 
     * @param oEquipo
     * @throws Exception
     */
    public void setDatosEquipo(Equipos oEquipo) throws Exception{
        //Esta función sirve para guardar en la base de datos la información
        //introducida por el usuario.
        //A este método se le debe entregar el objeto que se desea cargar a la 
        //base de datos.
        //Conección SQL-LITTLE
        Class.forName("org.sqlite.JDBC");
        //Conexión con el archivo de base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Guarda en la tabla equipos todos sus atributos.
        stat.executeUpdate("insert into equipos values ('"+oEquipo.getsLeg()+"',"
                + "'"+oEquipo.getsNombre()+"','"+oEquipo.getsStock_deseado()+
                "','"+oEquipo.getsStock_actual()+"','"+oEquipo.getsUbicacion()+"',"
                + "'"+oEquipo.getsAclaraciones()+"',"
                + "'"+oEquipo.getsCodigo()+"','"+oEquipo.getsManuales()+"',"
                + "'"+oEquipo.getsUbicacion_manual()+"','"+oEquipo.getsDescripcion()+"');");
        //Conexión a a la base de datos finalizada.
        conn.close();
    }
    
    /**
     * 
     * @param sNombre
     * @return
     * @throws Exception
     */
    public Equipos getDatosEquipos(String sNombre) throws Exception{
        //Método para conseguir los datos guardados en la base de datos.
        //A este método se le debe entregar el nombre del equipo que se busca.
        //Crea un nuevo objeto equipo.
        Equipos oEquipo=new Equipos();
        //Conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Selecciona datos de la tabla equipos.
        ResultSet rs = stat.executeQuery("select * from equipos where equipos.nombre like'"+sNombre+"';");
        //Mientras recibe datos.
        while (rs.next()) {            
            oEquipo.setsNombre(rs.getString("nombre"));//Setea el nombre.
            oEquipo.setsStock_deseado(rs.getString("stock_deseado"));//Setea el Stock deseado.
            oEquipo.setsStock_actual(rs.getString("stock_actual"));//Setea el stock actual.
            oEquipo.setsUbicacion(rs.getString("ubicacion"));//Setea la ubicación del equipo.
            oEquipo.setsAclaraciones(rs.getString("aclaraciones"));//Setea las aclaraciones.
            oEquipo.setsCodigo(rs.getString("codigo"));//Setea el código del equipo.
            oEquipo.setsManuales(rs.getString("manuales"));//Setea los manuales.
            oEquipo.setsUbicacion_manual(rs.getString("ubicacion_manual"));//Setea la ubicación del manual.
            oEquipo.setsDescripcion(rs.getString("descripcion"));//Setea la descripción del equipo.
            oEquipo.setsLeg(rs.getString("legajo"));//Setea el legajo del equipo.          
        }
        //Termino la recepción de datos.
        rs.close();
        //Terminó la conexión a la base de datos.
        conn.close();
        //Devuelve como resultado el objeto alumno.
        return oEquipo;
    }
    
    /**
     * 
     * @param oEquipo
     * @throws Exception
     */
    public void updateDatosEquipo(Equipos oEquipo)throws Exception{
        Class.forName("org.sqlite.JDBC");
        //Conección con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienzo de envío de datos.
        Statement stat = conn.createStatement();
        //Ejecuta la instrucción para modificar la base de datos.
        stat.executeUpdate("update equipos set nombre='"+oEquipo.getsNombre()+"" +
                "', stock_deseado='"+oEquipo.getsStock_deseado()+"' "
                + ",Stock_actual='"+oEquipo.getsStock_actual()+"'"
                + ",ubicacion='"+oEquipo.getsUbicacion()+"', aclaraciones='"+oEquipo.getsAclaraciones()+""
                + "', codigo='"+oEquipo.getsCodigo()+"', manuales='"+oEquipo.getsManuales()+""
                + "', ubicacion_manual='"+oEquipo.getsUbicacion_manual()+""
                + "', descripcion='"+oEquipo.getsDescripcion()+"'"
                + "where legajo="+oEquipo.getsLeg()+";");
        //Fin de la conección.
        conn.close();       
    }

    /**
     * 
     * @return
     * @throws Exception
     */
    public String DatosEquipotoHtml() throws Exception{
        //Declara una variable auxiliar.
        String sAux="";
        //Setea el título de la tabla HTML.
        sAux+="<center><h1>Instituto Técnico Salesiano Villada</h1>";
        //Setea el subtítulo de la tabla HTML.
        sAux+="<h2>Equipos Especialidad Electrónica Industrial</h2><hr></center>";
        //Setea el borde y el ancho de la tabla.
        sAux+="<center><table border=1 width=700px>";
        //Setea las columnas de la tabla.
        sAux+="<tr><th>N° </th><th>Nombre</th><th>Stock Deseado</th><th>Stock Actual</th>"
                + "<th>Ubicación</th><th>Aclaraciones</th><th>Código</th><th>"
                + "Manuales</th><th>Ubicación Manuales</th><th>Descripción</th>";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from equipos order by legajo;");
        int i=0;
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Aumenta una variable.
            i++;
            //Setea el número de envío en una celda.
            sAux+="<tr><td>"+i+"</td>";
            //Setea el nombre y el legajo en una misma celda
            sAux+="<td><b>" + rs.getString("nombre")+"</b><i>("+rs.getString("legajo")+")</i></td>";
            //Setea el stock deseado en una celda.
            sAux+="<td>" + rs.getString("stock_deseado")+"</td>";
            //Setea el stock actual en una celda.
            sAux+="<td>" + rs.getString("stock_actual")+"</td>";
            //Setea la ubicación en una celda.
            sAux+="<td>" + rs.getString("ubicacion")+"</td>";
            //Setea las aclaraciones en una celda.
            sAux+="<td>" + rs.getString("aclaraciones")+"</td>";
            //Setea el código en una celda.
            sAux+="<td>" + rs.getString("codigo")+"</td>";
            //Setea los manuales en una celda.
            sAux+="<td>" + rs.getString("manuales")+"</td>";
            //Setea la ubicación de los manuales en una celda.
            sAux+="<td>" + rs.getString("ubicacion_manual")+"</td>";
            //Setea las descripciones en una celda.
            sAux+="<td>" + rs.getString("descripcion")+"</td>";
        }
        //Fin del envío de datos.
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        //Cierra la tabla HTML.
        sAux+="</table></center>";
        return sAux;
    }
     
///////////////////////////////////////////////////////////////////////////////
////////////////////////////BIBLIOGRAFIA///////////////////////////////////////
    /**
     * 
     * @throws Exception
     */
    public void crearDatosBibliografia() throws Exception {
        //Este método crea una base de datos de la bibliografía.
        //Conexión con el archivo de base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Crea una tabla llamada bibliografia.
        stat.executeUpdate("create table bibliografia  (legajo INTEGER PRIMARY KEY, nombre, "
                + "stock_deseado, stock_actual, ubicacion, aclaraciones);");
        //Termina la conexión.
        conn.close();
    }
    
    /**
     * 
     * @param oBasico
     * @throws Exception
     */
    public void setDatosBibliografia(Basico oBasico) throws Exception{
        //Esta función sirve para guardar en la base de datos la información
        //introducida por el usuario.
        //A este método se le debe entregar el objeto que se desea cargar a la 
        //base de datos.
        //Conección SQL-LITTLE
        Class.forName("org.sqlite.JDBC");
        //Conexión con el archivo de base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Guarda en la tabla bibliografía todos sus atributos.
        stat.executeUpdate("insert into bibliografia values ('"+oBasico.getsLeg()+"',"
                + "'"+oBasico.getsNombre()+"','"+oBasico.getsStock_deseado()+
                "','"+oBasico.getsStock_actual()+"','"+oBasico.getsUbicacion()+"',"
                + "'"+oBasico.getsAclaraciones()+"');");
        //Conexión a a la base de datos finalizada.
        conn.close();
    }
    
    /**
     * 
     * @param sNombre
     * @return
     * @throws Exception
     */
    public Basico getDatosBibliografia(String sNombre) throws Exception{
        //Método para conseguir los datos guardados en la base de datos.
        //A este método se le debe entregar el nombre de la bibliografía que se busca.
        //Crea un nuevo objeto básico.
        Basico oBasico=new Basico();
        //Conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Selecciona datos de la tabla bibliografía.
        ResultSet rs = stat.executeQuery("select * from bibliografia where bibliografia.nombre like'"+sNombre+"';");
        //Mientras recibe datos.
        while (rs.next()) {            
            oBasico.setsNombre(rs.getString("nombre"));//Setea el nombre.
            oBasico.setsStock_deseado(rs.getString("stock_deseado"));//Setea el Stock deseado.
            oBasico.setsStock_actual(rs.getString("stock_actual"));//Setea el stock actual.
            oBasico.setsUbicacion(rs.getString("ubicacion"));//Setea la ubicación del equipo.
            oBasico.setsAclaraciones(rs.getString("aclaraciones"));//Setea las aclaraciones.
            oBasico.setsLeg(rs.getString("legajo"));
            
        }
        //Termino la recepción de datos.
        rs.close();
        //Terminó la conexión a la base de datos.
        conn.close();
        //Devuelve como resultado el objeto alumno.
        return oBasico;
    }
    
    /**
     * 
     * @param oBasico
     * @throws Exception
     */
    public void updateDatosBibliografia(Basico oBasico)throws Exception{
        Class.forName("org.sqlite.JDBC");
        //Conección con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienzo de envío de datos.
        Statement stat = conn.createStatement();
        //Ejecuta la instrucción para modificar la base de datos.
        stat.executeUpdate("update bibliografia set nombre='"+oBasico.getsNombre()+"" +
                "', stock_deseado='"+oBasico.getsStock_deseado()+"' "
                + ",Stock_actual='"+oBasico.getsStock_actual()+"'"
                + ",ubicacion='"+oBasico.getsUbicacion()+"', aclaraciones='"+oBasico.getsAclaraciones()+"'"
                + "where legajo="+oBasico.getsLeg()+";");
        //Fin de la conección.
        conn.close();       
    }

    /**
     * 
     * @return
     * @throws Exception
     */
    public String DatosBibliografiatoHtml() throws Exception{
        //Declara una variable auxiliar.
        String sAux="";
        //Setea el título de la tabla HTML.
        sAux+="<center><h1>Instituto Técnico Salesiano Villada</h1>";
        //Setea el subtítulo de la tabla HTML.
        sAux+="<h2>Bibliografía Especialidad Electrónica Industrial</h2><hr></center>";
        //Setea el borde y el ancho de la tabla.
        sAux+="<center><table border=1 width=700px>";
        //Setea las columnas de la tabla.
        sAux+="<tr><th>N° </th><th>Nombre</th><th>Stock Deseado</th><th>Stock Actual</th>"
                + "<th>Ubicación</th><th>Aclaraciones</th>";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from bibliografia order by legajo;");
        int i=0;
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Aumenta una variable.
            i++;
            //Setea el número de envío en una celda.
            sAux+="<tr><td>"+i+"</td>";
            //Setea el nombre y el legajo en una misma celda
            sAux+="<td><b>" + rs.getString("nombre")+"</b><i>("+rs.getString("legajo")+")</i></td>";
            //Setea el stock deseado en una celda.
            sAux+="<td>" + rs.getString("stock_deseado")+"</td>";
            //Setea el stock actual en una celda.
            sAux+="<td>" + rs.getString("stock_actual")+"</td>";
            //Setea la ubicación en una celda.
            sAux+="<td>" + rs.getString("ubicacion")+"</td>";
            //Setea las aclaraciones en una celda.
            sAux+="<td>" + rs.getString("aclaraciones")+"</td>";
        }
        //Fin del envío de datos.
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        //Cierra la tabla HTML.
        sAux+="</table></center>";
        return sAux;
    }
    
///////////////////////////////////////////////////////////////////////////////
////////////////////////////COMPONENTES////////////////////////////////////////
    /**
     * 
     * @throws Exception
     */
    public void crearDatosComponentes() throws Exception {
        //Este método crea una base de datos de los componentes.
        //Conexión con el archivo de base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Crea una tabla llamada componentes.
        stat.executeUpdate("create table componentes (legajo INTEGER PRIMARY KEY, nombre, "
                + "stock_deseado, stock_actual, ubicacion, aclaraciones,"
                + "categoria, subcategoria, potencia, valor, encapsulado, tension);");
        //Termina la conexión.
        conn.close();
    }
    
    /**
     * 
     * @param oComponentes
     * @throws Exception
     */
    public void setDatosComponentes(Componentes oComponentes) throws Exception{
        //Esta función sirve para guardar en la base de datos la información
        //introducida por el usuario.
        //A este método se le debe entregar el objeto que se desea cargar a la 
        //base de datos.
        //Conección SQL-LITTLE
        Class.forName("org.sqlite.JDBC");
        //Conexión con el archivo de base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Guarda en la tabla componentes todos sus atributos.
        stat.executeUpdate("insert into componentes values ('"+oComponentes.getsLeg()+"',"
                + "'"+oComponentes.getsNombre()+"','"+oComponentes.getsStock_deseado()+
                "','"+oComponentes.getsStock_actual()+"','"+oComponentes.getsUbicacion()+"',"
                + "'"+oComponentes.getsAclaraciones()+"','"+oComponentes.getsCategoria()+"',"
                + "'"+oComponentes.getsSubcategoria()+"','"+oComponentes.getsPotencia()+"',"
                + "'"+oComponentes.getsValor()+"','"+oComponentes.getsEncapsulado()+"',"
                + "'"+oComponentes.getsTension()+"');");
        //Conexión a a la base de datos finalizada.
        conn.close();
    }
    
    /**
     * 
     * @param sNombre
     * @return
     * @throws Exception
     */
    public Componentes getDatosComponentes(String sNombre) throws Exception{
        //Método para conseguir los datos guardados en la base de datos.
        //A este método se le debe entregar el nombre del componente que se busca.
        //Crea un nuevo objeto Componentes.
        Componentes oComponentes = new Componentes();
        //Conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        Statement stat = conn.createStatement();
        //Selecciona datos de la tabla componentes.
        ResultSet rs = stat.executeQuery("select * from componentes where componentes.nombre like'"+sNombre+"';");
        //Mientras recibe datos.
        while (rs.next()) {            
            oComponentes.setsNombre(rs.getString("nombre"));//Setea el nombre.
            oComponentes.setsStock_deseado(rs.getString("stock_deseado"));//Setea el Stock deseado.
            oComponentes.setsStock_actual(rs.getString("stock_actual"));//Setea el stock actual.
            oComponentes.setsUbicacion(rs.getString("ubicacion"));//Setea la ubicación del equipo.
            oComponentes.setsAclaraciones(rs.getString("aclaraciones"));//Setea las aclaraciones.
            oComponentes.setsLeg(rs.getString("legajo"));//Setea el legajo.
            oComponentes.setsCategoria(rs.getString("categoria"));//Setea el legajo.
            oComponentes.setsSubcategoria(rs.getString("subcategoria"));//Setea el legajo.
            oComponentes.setsValor(rs.getString("valor"));//Setea el legajo.
            oComponentes.setsEncapsulado(rs.getString("encapsulado"));//Setea el legajo.
            oComponentes.setsPotencia(rs.getString("potencia"));//Setea el legajo.
            oComponentes.setsTension(rs.getString("tension"));//Setea el legajo.
        }
        //Termino la recepción de datos.
        rs.close();
        //Terminó la conexión a la base de datos.
        conn.close();
        //Devuelve como resultado el objeto alumno.
        return oComponentes;
    }
    
    /**
     * 
     * @param oComponentes
     * @throws Exception
     */
    public void updateDatosComponentes(Componentes oComponentes)throws Exception{
        Class.forName("org.sqlite.JDBC");
        //Conección con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienzo de envío de datos.
        Statement stat = conn.createStatement();
        //Ejecuta la instrucción para modificar la base de datos.
        stat.executeUpdate("update componentes set nombre='"+oComponentes.getsNombre()+"" +
                "', stock_deseado='"+oComponentes.getsStock_deseado()+"' "
                + ",Stock_actual='"+oComponentes.getsStock_actual()+"'"
                + ",ubicacion='"+oComponentes.getsUbicacion()+"', aclaraciones='"+oComponentes.getsAclaraciones()+"'"
                + ",categoria='"+oComponentes.getsCategoria()+"', subcategoria='"+oComponentes.getsSubcategoria()+"'"
                + ",valor='"+oComponentes.getsValor()+"', tension='"+oComponentes.getsTension()+"'"
                + ",encapsulado='"+oComponentes.getsEncapsulado()+"', potencia='"+oComponentes.getsPotencia()+"'"
                + "where legajo="+oComponentes.getsLeg()+";");
        //Fin de la conexión.
        conn.close();       
    }

    /**
     * 
     * @return
     * @throws Exception
     */
    public String DatosComponentesToHtml() throws Exception{
        //Declara una variable auxiliar.
        String sAux="";
        //Setea el título de la tabla HTML.
        sAux+="<center><h1>Instituto Técnico Salesiano Villada</h1>";
        //Setea el subtítulo de la tabla HTML.
        sAux+="<h2>Componentes Especialidad Electrónica Industrial</h2><hr></center>";
        //Setea el borde y el ancho de la tabla.
        sAux+="<center><table border=1 width=700px>";
        //Setea las columnas de la tabla.
        sAux+="<tr><th>N° </th><th>Nombre</th><th>Stock Deseado</th><th>Stock Actual</th>"
                + "<th>Ubicación</th><th>Aclaraciones</th>"
                + "<th>Categoría</th><th>Subcategoría</th>"
                + "<th>Potencia</th><th>Valor</th>"
                + "<th>Ecapsulado</th><th>tensión</th>";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from componentes order by legajo;");
        int i=0;
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Aumenta una variable.
            i++;
            //Setea el número de envío en una celda.
            sAux+="<tr><td>"+i+"</td>";
            //Setea el nombre y el legajo en una misma celda
            sAux+="<td><b>" + rs.getString("nombre")+"</b><i>("+rs.getString("legajo")+")</i></td>";
            //Setea el stock deseado en una celda.
            sAux+="<td>" + rs.getString("stock_deseado")+"</td>";
            //Setea el stock actual en una celda.
            sAux+="<td>" + rs.getString("stock_actual")+"</td>";
            //Setea la ubicación en una celda.
            sAux+="<td>" + rs.getString("ubicacion")+"</td>";
            //Setea las aclaraciones en una celda.
            sAux+="<td>" + rs.getString("aclaraciones")+"</td>";
            //Setea el código en una celda.
            sAux+="<td>" + rs.getString("categoria")+"</td>";
            //Setea la categoría en una celda.
            sAux+="<td>" + rs.getString("subcategoria")+"</td>";
            //Setea la subcategoría en una celda.
            sAux+="<td>" + rs.getString("potencia")+"</td>";
            //Setea la potencia en una celda.
            sAux+="<td>" + rs.getString("valor")+"</td>";
            //Setea el valor en una celda.
            sAux+="<td>" + rs.getString("encapsulado")+"</td>";
            //Setea el encapsulado en una celda.
            sAux+="<td>" + rs.getString("tension")+"</td>";
            //Setea la tensión en una celda.
        }
        //Fin del envío de datos.
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        //Cierra la tabla HTML.
        sAux+="</table></center>";
        return sAux;
    }
    
////////////////////////////////////////////////////////////////////////////////
///////////////////////////PRESTAMOS////////////////////////////////////////////
    /**
     * 
     * @throws Exception
     */
    public void crearDatosPrestamos() throws Exception {
        //Este método crea una base de datos de los préstamos.
        //Conexión con el archivo de base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Prestamos.db");
        Statement stat = conn.createStatement();
        //Crea una tabla llamada prestamos.
        stat.executeUpdate("create table prestamos  (legajo INTEGER PRIMARY KEY, nombreU, "
                + "nombreA, cantidad, fecha_inicial, fecha_devolucion);");
        //Termina la conexión.
        conn.close();
    }
    
    /**
     * 
     * @param oPrestamos
     * @throws Exception
     */
    public void setDatosPrestamos(Prestamos oPrestamos) throws Exception{
        //Esta función sirve para guardar en la base de datos la información
        //introducida por el usuario.
        //A este método se le debe entregar el objeto que se desea cargar a la 
        //base de datos.
        //Conección SQL-LITTLE
        Class.forName("org.sqlite.JDBC");
        //Conexión con el archivo de base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Prestamos.db");
        Statement stat = conn.createStatement();
        //Guarda en la tabla prestamos todos sus atributos.
        stat.executeUpdate("insert into prestamos values ('"+oPrestamos.getsLegajo()+"',"
                + "'"+oPrestamos.getsNombreU()+"','"+oPrestamos.getsNombreA()+
                "','"+oPrestamos.getsCantidad()+"','"+oPrestamos.getsFecha_Inicial()+"','"+oPrestamos.getsFecha_Entrega()+"');");
        //Conexión a a la base de datos finalizada.
        conn.close();
    }
    
    /**
     * 
     * @param sLegajo
     * @return
     * @throws Exception
     */
    public Prestamos getDatosPrestamos(String sLegajo) throws Exception{
        //Método para conseguir los datos guardados en la base de datos.
        //A este método se le debe entregar el legajo del préstamo que se busca.
        //Crea un nuevo objeto prestamos.
        Clases.Prestamos oPrestamos = new Prestamos();
        //Conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Prestamos.db");
        Statement stat = conn.createStatement();
        //Selecciona datos de la tabla prestamos.
        ResultSet rs = stat.executeQuery("select * from prestamos where prestamos.legajo like'"+sLegajo+"';");
        //Mientras recibe datos.
        while (rs.next()) {
            oPrestamos.setsLegajo(rs.getString("legajo"));//Setea el legajo del préstamo.
            oPrestamos.setsNombreU(rs.getString("nombreU"));//Setea el legajo del elemento prestado.           
            oPrestamos.setsNombreA(rs.getString("nombreA"));//Setea el legajo del alumno.
            oPrestamos.setsCantidad(rs.getString("cantidad"));//Setea la cantidad de elementos retirados.
            oPrestamos.setsFecha_Inicial(rs.getString("fecha_inicial"));//Setea la fecha inicial.
            oPrestamos.setsFecha_Entrega(rs.getString("fecha_devolucion"));//Setea la fecha de Devolucion.
        }
        //Termino la recepción de datos.
        rs.close();
        //Terminó la conexión a la base de datos.
        conn.close();
        //Devuelve como resultado el objeto alumno.
        return oPrestamos;
    }
    
    /**
     * 
     * @param oPrestamos
     * @throws Exception
     */
    public void updateDatosPrestamos(Prestamos oPrestamos)throws Exception{
        Class.forName("org.sqlite.JDBC");
        //Conección con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Prestamos.db");
        //Comienzo de envío de datos.
        Statement stat = conn.createStatement();
        //Ejecuta la instrucción para modificar la base de datos.
        stat.executeUpdate("update prestamos set cantidad='"+oPrestamos.getsCantidad()+"" +
                "', nombreA='"+oPrestamos.getsNombreA()+"' "
                + ",nombreU='"+oPrestamos.getsNombreU()+"'"
                +",fecha_inicial='"+oPrestamos.getsFecha_Inicial()+"'"
               +",fecha_devolucion='"+oPrestamos.getsFecha_Entrega()+"'"
                + "where legajo="+oPrestamos.getsLegajo()+";");
        //Fin de la conexión.
        conn.close();       
    }

    /**
     * 
     * @param sOrden
     * @return
     * @throws Exception
     */
    public String DatosPrestamostoHtml(String sOrden) throws Exception{
        //Declara una variable auxiliar.
        String sAux="";
        //Setea el título de la tabla HTML.
        sAux+="<center><h1>Instituto Técnico Salesiano Villada</h1>";
        //Setea el subtítulo de la tabla HTML.
        sAux+="<h2>Préstamos Especialidad Electrónica Industrial</h2><hr></center>";
        //Setea el borde y el ancho de la tabla.
        sAux+="<center><table border=1 width=700px>";
        //Setea las columnas de la tabla.
        sAux+="<tr><th>N° </th><th>Nombre</th><th>Elemento</th>"
                + "<th>Cantidad</th><th>Fecha Inicial</th><th>Fecha Devolucion</th><th>Estado</th>";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Prestamos.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from prestamos order by "+sOrden+";");
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Setea el legajo del préstamo en una celda.
            sAux+="<tr><td>"+rs.getString("legajo")+"</td>";
            //Setea el nombre del alumno y su legajo en una misma celda
            sAux+="<td>"+rs.getString("nombreA")+"</td>";
            //Setea el componente prestado y su legajo en una celda.
            sAux+="<td>"+rs.getString("nombreU")+"</td>";
            //Setea la cantidad del elemento prestado en una celda.
            sAux+="<td>" + rs.getString("cantidad")+"</td>";
            //Setea la fecha de inicio del préstamo en una celda.
            sAux+="<td>" + rs.getString("fecha_inicial")+"</td>";
            //Setea la fecha de entrega del préstamo en una celda.
            sAux+="<td>" + rs.getString("fecha_devolucion")+"</td>";
            if(rs.getString("fecha_devolucion").equals(""))
            {
                //Si se debe el componente:
                //Setea la celda con un link para dar de baja el préstamo del componente.
                sAux+="<td><a href=http://localhost/m.html#" + rs.getString("legajo")+">"+"Devolver"+"</a></td>";
            }
            else
            {
                //Si no se debe el componente:
                //Setea la celda con un mensaje de devuelto.
                sAux+="<td>" + "Componente Devuelto" +"</td>";
            }
        }
        //Fin del envío de datos.Datos
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        //Cierra la tabla HTML.
        sAux+="</table></center>";
        return sAux;
    }
    
    /**
     * 
     * @param sTipo
     * @return
     * @throws Exception
     */
    public String DatosElementos(String sTipo) throws Exception{
        //Esta función extrae de la base de datos todos los alumnos que se
        //encuentran en el curso que es entregado a esta variable.
        //Declara una variable auxiliar.
        String sAux="";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from '"+sTipo+"';");
        int i=0;
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Aumenta una variable.
            i++;
            //Setea el nombre en la variable.
            sAux+=rs.getString("nombre") + ":";
        }
        //Fin del envío de datos.
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        return sAux;
    }
    
    /**
     * 
     * @param sCurso
     * @return
     * @throws Exception
     */
    public String DatosPersona(String sCurso) throws Exception{
        //Esta función extrae de la base de datos todos los alumnos que se
        //encuentran en el curso que es entregado a esta variable.
        //Declara una variable auxiliar.
        String sAux="";
        Class.forName("org.sqlite.JDBC");
        //Conexión con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Personas.db");
        //Comienza el envío de información.
        Statement stat = conn.createStatement();
        //Extrae la información de la base de datos.
        ResultSet rs = stat.executeQuery("select * from persona where persona.curso like'"+sCurso+"';");
        int i=0;
        while (rs.next()) {
            //Mientras existan datos para extraer:
            //Aumenta una variable.
            i++;
            //Setea el nombre en la variable.
            sAux+=rs.getString("nombre") + ":";
        }
        //Fin del envío de datos.
        rs.close();
        //Cierra la conexión con la base de datos.
        conn.close();
        return sAux;
    }
        
    /**
     * 
     * @param sTabla
     * @param sCantidad
     * @param sLegajo
     * @throws Exception
     */
    public void updateDatosCantidad(String sTabla, String sCantidad, String sLegajo)throws Exception{
        Class.forName("org.sqlite.JDBC");
        //Conección con la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:Componentes.db");
        //Comienzo de envío de datos.
        Statement stat = conn.createStatement();
        //Ejecuta la instrucción para modificar la base de datos.
        stat.executeUpdate("update '"+sTabla+"' set stock_actual='"+sCantidad+"'" +
                " where legajo="+sLegajo+";");
        //Fin de la conexión.
        conn.close();       
    }
    
    /**
     * 
     * @param sCantidadR
     * @param sCantidadS
     * @return
     */
    public String Resta (String sCantidadR,String sCantidadS){
        //Esta función realiza una resta entre dos variables string y devuelve como
        //resultado otra variable string.
        int iCantidadR = Integer.parseInt(sCantidadR);//Convierte el string en integer y lo guarda
        int iCantidadS = Integer.parseInt(sCantidadS) - iCantidadR;//Convierte el string en integer y lo guarda. Luego resta el otro integer.
        String sCantidad =""+iCantidadS ;//Le suma a nada el integer de la resta anterior.
        return sCantidad;//Devuelve la la variable string con el resultado de la resta.
    }
    
    /**
     * 
     * @param sArchivo
     * @param sTabla
     * @return
     * @throws Exception
     */
    public String getLastLegajo(String sArchivo, String sTabla)throws Exception{
        //Declaro un String sin contenido.
        String sAux="";
        //Preparo la conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        //Conexión al archivo donde se encuentra la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:"+sArchivo+"");
        //Comienza la conexión.
        Statement stat = conn.createStatement();
        //Comienzo de recepción de datos.
        ResultSet rs = stat.executeQuery("select max(legajo)+1 as ultimo from '"+sTabla+"';");
        //Setea la varible el último número del legajo más uno.
        sAux=rs.getString("ultimo");
        //Termina la recepción de datos.
        rs.close();
        //Termina la conexíon a la base de datos.
        conn.close();
        //Devuelve la variable con el último legajo.
        if (sAux == null)
        {
            //Si no existe un legajo en la tabla:
            sAux = "1";//Se setea el legajo en 1.
        }
        return sAux;
    }
    
    /**
     * 
     * @param sArchivo
     * @param sTabla
     * @param sAux
     * @throws Exception
     */
    public void DelDato(String sArchivo, String sTabla, String sAux)throws Exception{
        //Esta función se utiliza para borrar elementos de una tabla. Se le debe entregar 
        //el nombre del archivo donde se encuentra la tabla, el nombre de la tabla y
        //el nombre del elemento que se quiere eliminar.
        //Preparo la conexión a la base de datos.
        Class.forName("org.sqlite.JDBC");
        //Conexión al archivo donde se encuentra la base de datos.
        Connection conn = DriverManager.getConnection("jdbc:sqlite:"+sArchivo+"");
        //Comienza la conexión.
        Statement stat = conn.createStatement();
        //Comienzo de recepción de datos.
        if (sTabla.equals("prestamos"))
        {
            //Si la tabla es de prestamos:
            stat.executeUpdate("delete from '"+sTabla+"' where legajo='"+sAux+"';");
        }
        else
        {
            //Si es otra tabla:
            stat.executeUpdate("delete from '"+sTabla+"' where nombre='"+sAux+"';");
        }
        //Termina la conexíon a la base de datos.
        conn.close(); 
    } 
}
    

